using System.ComponentModel.DataAnnotations;

namespace JGSY.CMS.LowCode.Platform.Application.DTOs
{
    /// <summary>
    /// 工作流批量导入结果数据传输对象
    /// 用于返回批量导入工作流的执行结果，包括成功和失败的详细信息
    /// 提供统计数据和具体的导入失败原因，便于用户了解导入状态和处理错误
    /// </summary>
    public class WorkflowBatchImportResult
    {
        /// <summary>
        /// 成功导入数量
        /// </summary>
        public int SuccessCount { get; set; }

        /// <summary>
        /// 失败数量
        /// </summary>
        public int FailCount { get; set; }

        /// <summary>
        /// 成功导入的工作流
        /// </summary>
        public List<WorkflowDto> SuccessWorkflows { get; set; } = new();

        /// <summary>
        /// 失败的导入记录
        /// </summary>
        public List<WorkflowImportFailure> FailedImports { get; set; } = new();
    }

    /// <summary>
    /// 工作流导入失败信息数据传输对象
    /// 记录单个工作流导入失败的详细信息，包括文件名、错误原因和工作流名称
    /// 用于帮助用户识别和修复导入过程中的问题
    /// </summary>
    public class WorkflowImportFailure
    {
        /// <summary>
        /// 文件名
        /// </summary>
        public string FileName { get; set; } = string.Empty;

        /// <summary>
        /// 错误信息
        /// </summary>
        public string ErrorMessage { get; set; } = string.Empty;

        /// <summary>
        /// 工作流名称（如果能解析出来）
        /// </summary>
        public string? WorkflowName { get; set; }
    }
}
